好好学习,天天向上

译|学习Python最佳方法

原文:The Best Way to Learn Python

Python变得比以往任何时候都受欢迎。从后端Web服务器,到前端游戏开发,Python被广泛应用于其间各方各面。Python是一门真正的通用语言,并迅速成为任何一个自重的程序员兵器谱上的一个必备工具。

但是,Python并不是因为流行而受欢迎的。而是因为它易学,如伪代码般易读及极度敏捷。然而,学习任何一个新语言都有可能成为一项艰巨的任务,而找到正确的方法以及向正确的人学习则可以事半功倍。这就是本指南能够做到的。这是是滴Python容易,有趣及值得学习的蓝图。

任务1:从基础开始

在写这篇文章的时候,有两个主流的Python版本:Python 2.7和Python 3.2.选择哪个版本来学习并不重要,因为它们之间的区别是很小的 - 尤其是对初学者而言。但是应该知道,Python 2拥有远远超过Python 3的第三方支持,而Python 3是设计语言的开发者的主要关注点。选择取决于你自己,但是如果你的代码与任何特定的教程都不同,请确保和教程中使用的Python版本相同。

维基百科的Python非程序员教程

维基百科总是学习新东西的一个重要来源,Python也不例外。 在这里,你可以找到一系列扎实而中肯的指导。它不会过于技术化,而你可以投入某些有用的变成并且立即得到回报。因此,我推荐这个网站,作为开始你的Python之旅的最好地方。

官方Python教程

你不会找到比官方python.org文档最好的信息来源了。然而,如果你想即刻投入,我相信大部分的你们都会想,这可能不是开始的最好地方。

它的内容会比维基百科更技术化,在后续你深入语言时将会很有帮助。但是,对于初学者而言,它将妨碍你学习这么一门超级简单且美的语言。

对于初学者,Python 2和Python 3最大的区别最有可能是Python 2可以打印而不需要使用括号。Python 3需要括号,但也仅此而已。

任务2:教程和视频教程

TheNewBoston的Python编程教程

TheNewBoston的播放列表总是很棒的,你可以学到一大堆的语言。"Bucky"是一个超好的讲师,因为他很好的处理了有趣和容易听讲之间的关系。我强烈推荐他的任何播放列表 - 特别是他的Python播放列表。他假设学习的人编程零基础,并且会讲给你可以牢固掌握的语言。

Nettuts+的从头开始学Python

另一个是Giles Lavelle的Python简介。正如TheNewBoston系列,Lavelle也假设学习的人编程零基础。

如果你想要你的应用如何体现在一些实际应用中,或者目标在于使用Python进行web开发,这个系列可能就是你想要的那个。

这个视频教程让你使用Django这个Python web框架从无到创建一个动态网站。

ShowMeDo的Python教程

StackOverflow不只是充满了"新手"错误和问题。

ShowMeDo拥有Python相关视频的庞大目录。然而它可能没有最好的用户体验。这些视频的级别从完全新手到最高级的Python技术。很值得一试。

构建一个可以玩网络游戏的Python机器人

这个教程在关于你将学到什么是非常明确的。所以对于一个完全初学者来说,并不推荐。不过,我觉得,它值得一提。在这个指导中,Chris Kiehl会向你展示如何构建一个非常有意思的Python机器人,这个机器人将为你玩一个简单的游戏。这个教程真真正正展示了Python的能力。它可以用于完成你可能在你电脑上完成的每一天重复的工作。

任务3:免费的电子书

当你努力学习一些新的东西的时候,找到一个本好书是相当困难的。Python拥有强大的社区和大量免费的高质量的电子书以供选择。下面是一些最好的图书的快速列表。你可以下载它们的免费电子书版本,或者,也可以选择购买实体书(或者捐赠)来支持作者,我肯定,他们将不胜感激。

Learn Python the Hard Way

请忽略它的名字,Learn Python the Hard Way让Python学习难以置信的简单 - 正如它所意味的一样!在这本书中,Zed A. Shaw从头开始提供你一些Python的细节和全面而详尽的指南,而不会阻碍你实际的编码。Shaw这本书是非正式的,但是相当详细,这让阅读这本书变得容易而且值得一读。

Think Python: How to Think Like a Computer Scientist

正如子标题所暗示的,"如何像一个计算机科学家一样思考",Think Python更偏于理论知识。这对于初学者来说可能会有点挫败,但是在有关算法理论和高级概念方面,这本书是非常值得一读的。

Invent With Python

如果你习惯于"边做边学",那么构建你自己的游戏将会是一个很有价值的体验!在这本书中,Al Sweigart假设读者没有任何Python基础,并且带你一路构造自己的游戏。由于这本书是面向游戏开发的,对于完全新手来说会有点快。这篇文章的后面将提到他的一本类似的书,这本书假设读者已经有了一些Python知识。如果你觉得你已经很好地掌握了这门语言,那么他其他的书将会更适合你。

The Django Book

如果你想学习Python的WEB开发,那么你可能会使用Django框架。这本书假设你已经可以顺利使用Python了,但如果你是这个框架的初学者,它还会教你Django。The Django Book几乎如它们自身一样好,对于任何萌芽中的web开发者也是无价之宝。

Python Books

如果这还不够,或者想要一本关于特定主题的书,那么你可以试试这个链接。python.org上的人们已经汇集了广泛的书籍列表,这些列表根据难度和主题分类。

任务4:熟悉StackOverflow

成千上万的程序员都经历过你必然要面对的每一个问题。StackOverflow是一个超棒的资源,在那里,开发者可以找到他们问题的答案。当你偶然碰到了一个你不确定如何解决的问题时,搜索StackOverflow。你将极有可能找到问题的答案以及其他人如何解决他们的问题。

但是,StackOverflow不仅仅是充满了"新手"错误和问题。也有一些真正聪明和乐于助人的人使用这个网站 - 向他们学习吧!

例如,看一看[Python的隐藏特性](http://stackoverflow.com/questions/101268/hidden-features-of-python)

你可能在这里看到的许多其他正式教程不会提供的提示和小窍门,但它们对于高级Python用户来说将会非常有用。

任务5:欧拉计划

欧拉计划是我最喜欢的网站。在创建一个账号后,你可以完成网站上~400的问题。每一个问题大概包括50%的数学和50%的编程。在我看来,最有成就感的是可以学到更多关于每个主题的东西。

一开始的时候,问题会比较简单,以测试你关于语言的知识。但难度将会逐渐增长,以挑战即使是最有经验的程序员。最后,问题的难度将会促使你去寻找最有效的算法 - 如果你不想等待数小时来计算答案。

没有什么比促使你找到欧拉计划中的问题最快最有效的方法更能将你变成一个变成能手了。

当你破解了一个新的问题,你将获得进入论坛中关于这个问题的线程的机会。在那里,有很多人在讨论关于他们的方法和想法。在这个线程中的后面几页,你可能可以找到用Python实现的一些方法。这才是提高你的编程技巧的真正关键的地方。如果有人的方法比你更快,花点时间分析一下你还可以怎么提高你自己的方法。随着时间的推移,你将获得所有的技巧,并且以一种有意义的方式增长你的Python知识。

另外,也有一些关于欧拉计划上的问题解决方案(使用Python)的很棒的博客。如果你被困在一个问题中,不要害羞,你可以看看其他开发者的解法,只要你想要从中学习。 下面是两个我喜欢的博客: * Dreamshire * Mycila

任务6:构造一个游戏

没有什么比构造你自己的游戏更令你满意了。它可以是一个陡峭的学习曲线,但非常非常的值得。PyGame是Python最有名的游戏库,你可以找到一些关于它的免费教程。下面是一些好用的PyGame教程。

官方PyGame教程

除了原始的Python教程外,PyGame开发者也有属于他们自己的介绍文档。但如果你想要直接学习及开始构建你的游戏,那么这些可能过于技术了。然而,开发者文档将一直会是你最好的信息来源。所以,我仍然推荐你熟悉这个网站。

Invent With Python (With PyGame)

这个由 Al Sweigart提供的免费电子书贯穿PyGame库,带你从零基础到可以构建一些有些。如果你想要的话,简单的游戏将为你提供完美的平台来开始自己的项目。广泛而详尽的注释贯穿了Sweigart所有的代码以帮助你学习。

TheNewBoston的计算机游戏开发教程

这是TheNewBoston的另一个播放列表。它可以当做PyGame简介。它基于零基础假设,会让你对PyGame库感觉良好。但不像InventWithPython指南,它更关注于知识点,而不会带你构造自己完整的游戏。

任务7:了解一些常用库和工具

Python是通用语言,它几乎可以做任何一件事。所以,当然的,它拥有看似源源不断的库和工具。下面是一些最受欢迎的。

PyPy

如果你正在进行一些CPU密集型工作,然后你发现Python正在成为瓶颈,那么,你可能需要PyPy。PyPy是一个Python的可选编辑器,它可以提高处理速度。

NumPy + SciPy

这两个通常齐头并进(SciPy依赖于NumPy)。如果你正在进行一些严谨的数字运算或科学研究,那么这两个库将会是你最好的搭档。NumPy和SciPy扩展了Python的数学方法和能力,可以极大的提高某些任务的速度。

BeautifulSoup

BeautifulSoup确实很美丽。如果你需要抓取一个HTML页面以获得一些信息,你将会明白它将带来多少的沮丧和让你掉多少头发。BeautifulSoup将会为你完成这些使你更长寿。强烈推荐,享受它给你带来的乐趣吧~

Python Image Library

Python Image Library (PIL) 是一个扩展库,对于图片处理极为有用。如果你需要操作一张图片,没准PIL能帮到你。

Django

文章前面也提到了,如果你的目标是web开发,你将可能用到Django框架。它是Python最常用的web框架,也是拥有最多学习资源的框架。

任务8:参与开源项目

在你对这门语言有了一个深入的了解后,能够阅读和理解其他人的代码将是一个很重要的技能 - 更不用说这也是一个学习的好方法。 因此,开源项目是很不错的。这里,首选Github或者Bitbucket。不要担心人们会对你对代码评头论足,也不需要立刻贡献什么。你可以随时fork一个项目,自己修改一下来看看如何工作。如果碰巧看到一些你觉得可以改进的地方,真棒!放手去做吧,然后提交你对改进。这就是开源的意义。

总结

我希望我可以为你提供一个牢固的Python知识基础。如果你觉得还有其他好玩的地方应该包括在这个课程表中,请在下面评论以便共享。

请言小午吃个甜筒~~